#pragma once

#include <boost/noncopyable.hpp>

#include "../texture2d.h"

namespace GLC {

class TextureMap : public boost::noncopyable
{
public:
    TextureMap(Texture2DRef texture = Texture2DRef::createNull());
    ~TextureMap(void);

    // Связываем текстурную карту с текстурным объектом OpenGL
    /**
     * @brief AttachTexture - attach texture
     * @param textureId
     */
    void AttachTexture(Texture2DRef texture);

    // Получить текстурный объект, связанный с текстурной картой
    Texture2DRef const& GetTexture()const;

    // Установить трансформацию масштабирования текстурных координат
    void SetScale(float sx, float sy);

    // Установить смещение текстурных координат
    void SetOffset(float dx, float dy);

    // Установить угол поворота текстурных координат
    void SetRotation(float rotation);

    // Связан ли текстурный объект с данонй текстурной картой
    bool IsLoaded()const;

private:
    Texture2DRef m_texture;
    float m_sx;
    float m_sy;
    float m_dx;
    float m_dy;
    float m_rotation;
};
} // namespace GLC
